package com.gustavo.sistema.service;

import java.util.List;

import javax.inject.Inject;

import com.gustavo.sistema.dao.ErroDeBancoDeDados;
import com.gustavo.sistema.dao.jdbc.ProdutoDaoJdbc;
import com.gustavo.sistema.model.Produto;

public class ProdutoService extends Service {

	@Inject
	private ProdutoDaoJdbc produtoDaoJdbc;

	public void inserir(Produto produto) throws ErroNaFaseService {

		try {
			beginTransaction();

			produtoDaoJdbc.inserirProduto(produto);

			commitTransaction();

		} catch (ErroDeBancoDeDados e) {
			rollbackTransaction();
			throw new ErroNaFaseService(e);
		}
	}

	public void atualizar(Produto produto) throws ErroNaFaseService {

		try {
			beginTransaction();

			produtoDaoJdbc.atualizarProduto(produto);

			commitTransaction();

		} catch (ErroDeBancoDeDados e) {
			rollbackTransaction();
			throw new ErroNaFaseService(e);
		}
	}

	public void excluir(Integer id) throws ErroNaFaseService {

		try {
			beginTransaction();

			produtoDaoJdbc.excluirProduto(id);

			commitTransaction();

		} catch (ErroDeBancoDeDados e) {
			rollbackTransaction();
			throw new ErroNaFaseService(e);
		}
	}

	public List<Produto> listarProdutos() throws ErroNaFaseService {

		try {
			return produtoDaoJdbc.listarProdutos();

		} catch (ErroDeBancoDeDados e) {
			rollbackTransaction();
			throw new ErroNaFaseService(e);
		}
	}

}
